{
 "cells": [
  {
   "cell_type": "code",
   "execution_count": 1,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from sklearn.datasets import load_iris"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 7,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[5.1, 3.5, 1.4, 0.2],\n",
       "       [4.9, 3. , 1.4, 0.2],\n",
       "       [4.7, 3.2, 1.3, 0.2],\n",
       "       [4.6, 3.1, 1.5, 0.2],\n",
       "       [5. , 3.6, 1.4, 0.2],\n",
       "       [5.4, 3.9, 1.7, 0.4],\n",
       "       [4.6, 3.4, 1.4, 0.3],\n",
       "       [5. , 3.4, 1.5, 0.2],\n",
       "       [4.4, 2.9, 1.4, 0.2],\n",
       "       [4.9, 3.1, 1.5, 0.1],\n",
       "       [5.4, 3.7, 1.5, 0.2],\n",
       "       [4.8, 3.4, 1.6, 0.2],\n",
       "       [4.8, 3. , 1.4, 0.1],\n",
       "       [4.3, 3. , 1.1, 0.1],\n",
       "       [5.8, 4. , 1.2, 0.2],\n",
       "       [5.7, 4.4, 1.5, 0.4],\n",
       "       [5.4, 3.9, 1.3, 0.4],\n",
       "       [5.1, 3.5, 1.4, 0.3],\n",
       "       [5.7, 3.8, 1.7, 0.3],\n",
       "       [5.1, 3.8, 1.5, 0.3],\n",
       "       [5.4, 3.4, 1.7, 0.2],\n",
       "       [5.1, 3.7, 1.5, 0.4],\n",
       "       [4.6, 3.6, 1. , 0.2],\n",
       "       [5.1, 3.3, 1.7, 0.5],\n",
       "       [4.8, 3.4, 1.9, 0.2],\n",
       "       [5. , 3. , 1.6, 0.2],\n",
       "       [5. , 3.4, 1.6, 0.4],\n",
       "       [5.2, 3.5, 1.5, 0.2],\n",
       "       [5.2, 3.4, 1.4, 0.2],\n",
       "       [4.7, 3.2, 1.6, 0.2],\n",
       "       [4.8, 3.1, 1.6, 0.2],\n",
       "       [5.4, 3.4, 1.5, 0.4],\n",
       "       [5.2, 4.1, 1.5, 0.1],\n",
       "       [5.5, 4.2, 1.4, 0.2],\n",
       "       [4.9, 3.1, 1.5, 0.2],\n",
       "       [5. , 3.2, 1.2, 0.2],\n",
       "       [5.5, 3.5, 1.3, 0.2],\n",
       "       [4.9, 3.6, 1.4, 0.1],\n",
       "       [4.4, 3. , 1.3, 0.2],\n",
       "       [5.1, 3.4, 1.5, 0.2],\n",
       "       [5. , 3.5, 1.3, 0.3],\n",
       "       [4.5, 2.3, 1.3, 0.3],\n",
       "       [4.4, 3.2, 1.3, 0.2],\n",
       "       [5. , 3.5, 1.6, 0.6],\n",
       "       [5.1, 3.8, 1.9, 0.4],\n",
       "       [4.8, 3. , 1.4, 0.3],\n",
       "       [5.1, 3.8, 1.6, 0.2],\n",
       "       [4.6, 3.2, 1.4, 0.2],\n",
       "       [5.3, 3.7, 1.5, 0.2],\n",
       "       [5. , 3.3, 1.4, 0.2],\n",
       "       [7. , 3.2, 4.7, 1.4],\n",
       "       [6.4, 3.2, 4.5, 1.5],\n",
       "       [6.9, 3.1, 4.9, 1.5],\n",
       "       [5.5, 2.3, 4. , 1.3],\n",
       "       [6.5, 2.8, 4.6, 1.5],\n",
       "       [5.7, 2.8, 4.5, 1.3],\n",
       "       [6.3, 3.3, 4.7, 1.6],\n",
       "       [4.9, 2.4, 3.3, 1. ],\n",
       "       [6.6, 2.9, 4.6, 1.3],\n",
       "       [5.2, 2.7, 3.9, 1.4],\n",
       "       [5. , 2. , 3.5, 1. ],\n",
       "       [5.9, 3. , 4.2, 1.5],\n",
       "       [6. , 2.2, 4. , 1. ],\n",
       "       [6.1, 2.9, 4.7, 1.4],\n",
       "       [5.6, 2.9, 3.6, 1.3],\n",
       "       [6.7, 3.1, 4.4, 1.4],\n",
       "       [5.6, 3. , 4.5, 1.5],\n",
       "       [5.8, 2.7, 4.1, 1. ],\n",
       "       [6.2, 2.2, 4.5, 1.5],\n",
       "       [5.6, 2.5, 3.9, 1.1],\n",
       "       [5.9, 3.2, 4.8, 1.8],\n",
       "       [6.1, 2.8, 4. , 1.3],\n",
       "       [6.3, 2.5, 4.9, 1.5],\n",
       "       [6.1, 2.8, 4.7, 1.2],\n",
       "       [6.4, 2.9, 4.3, 1.3],\n",
       "       [6.6, 3. , 4.4, 1.4],\n",
       "       [6.8, 2.8, 4.8, 1.4],\n",
       "       [6.7, 3. , 5. , 1.7],\n",
       "       [6. , 2.9, 4.5, 1.5],\n",
       "       [5.7, 2.6, 3.5, 1. ],\n",
       "       [5.5, 2.4, 3.8, 1.1],\n",
       "       [5.5, 2.4, 3.7, 1. ],\n",
       "       [5.8, 2.7, 3.9, 1.2],\n",
       "       [6. , 2.7, 5.1, 1.6],\n",
       "       [5.4, 3. , 4.5, 1.5],\n",
       "       [6. , 3.4, 4.5, 1.6],\n",
       "       [6.7, 3.1, 4.7, 1.5],\n",
       "       [6.3, 2.3, 4.4, 1.3],\n",
       "       [5.6, 3. , 4.1, 1.3],\n",
       "       [5.5, 2.5, 4. , 1.3],\n",
       "       [5.5, 2.6, 4.4, 1.2],\n",
       "       [6.1, 3. , 4.6, 1.4],\n",
       "       [5.8, 2.6, 4. , 1.2],\n",
       "       [5. , 2.3, 3.3, 1. ],\n",
       "       [5.6, 2.7, 4.2, 1.3],\n",
       "       [5.7, 3. , 4.2, 1.2],\n",
       "       [5.7, 2.9, 4.2, 1.3],\n",
       "       [6.2, 2.9, 4.3, 1.3],\n",
       "       [5.1, 2.5, 3. , 1.1],\n",
       "       [5.7, 2.8, 4.1, 1.3],\n",
       "       [6.3, 3.3, 6. , 2.5],\n",
       "       [5.8, 2.7, 5.1, 1.9],\n",
       "       [7.1, 3. , 5.9, 2.1],\n",
       "       [6.3, 2.9, 5.6, 1.8],\n",
       "       [6.5, 3. , 5.8, 2.2],\n",
       "       [7.6, 3. , 6.6, 2.1],\n",
       "       [4.9, 2.5, 4.5, 1.7],\n",
       "       [7.3, 2.9, 6.3, 1.8],\n",
       "       [6.7, 2.5, 5.8, 1.8],\n",
       "       [7.2, 3.6, 6.1, 2.5],\n",
       "       [6.5, 3.2, 5.1, 2. ],\n",
       "       [6.4, 2.7, 5.3, 1.9],\n",
       "       [6.8, 3. , 5.5, 2.1],\n",
       "       [5.7, 2.5, 5. , 2. ],\n",
       "       [5.8, 2.8, 5.1, 2.4],\n",
       "       [6.4, 3.2, 5.3, 2.3],\n",
       "       [6.5, 3. , 5.5, 1.8],\n",
       "       [7.7, 3.8, 6.7, 2.2],\n",
       "       [7.7, 2.6, 6.9, 2.3],\n",
       "       [6. , 2.2, 5. , 1.5],\n",
       "       [6.9, 3.2, 5.7, 2.3],\n",
       "       [5.6, 2.8, 4.9, 2. ],\n",
       "       [7.7, 2.8, 6.7, 2. ],\n",
       "       [6.3, 2.7, 4.9, 1.8],\n",
       "       [6.7, 3.3, 5.7, 2.1],\n",
       "       [7.2, 3.2, 6. , 1.8],\n",
       "       [6.2, 2.8, 4.8, 1.8],\n",
       "       [6.1, 3. , 4.9, 1.8],\n",
       "       [6.4, 2.8, 5.6, 2.1],\n",
       "       [7.2, 3. , 5.8, 1.6],\n",
       "       [7.4, 2.8, 6.1, 1.9],\n",
       "       [7.9, 3.8, 6.4, 2. ],\n",
       "       [6.4, 2.8, 5.6, 2.2],\n",
       "       [6.3, 2.8, 5.1, 1.5],\n",
       "       [6.1, 2.6, 5.6, 1.4],\n",
       "       [7.7, 3. , 6.1, 2.3],\n",
       "       [6.3, 3.4, 5.6, 2.4],\n",
       "       [6.4, 3.1, 5.5, 1.8],\n",
       "       [6. , 3. , 4.8, 1.8],\n",
       "       [6.9, 3.1, 5.4, 2.1],\n",
       "       [6.7, 3.1, 5.6, 2.4],\n",
       "       [6.9, 3.1, 5.1, 2.3],\n",
       "       [5.8, 2.7, 5.1, 1.9],\n",
       "       [6.8, 3.2, 5.9, 2.3],\n",
       "       [6.7, 3.3, 5.7, 2.5],\n",
       "       [6.7, 3. , 5.2, 2.3],\n",
       "       [6.3, 2.5, 5. , 1.9],\n",
       "       [6.5, 3. , 5.2, 2. ],\n",
       "       [6.2, 3.4, 5.4, 2.3],\n",
       "       [5.9, 3. , 5.1, 1.8]])"
      ]
     },
     "execution_count": 7,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris_data = load_iris()\n",
    "iris_data.data\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 9,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.1, 3.5, 1.4, 0.2])"
      ]
     },
     "execution_count": 9,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris_data.data.shape\n",
    "iris_data.data[0,:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 10,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.1, 4.9, 4.7, 4.6, 5. , 5.4, 4.6, 5. , 4.4, 4.9, 5.4, 4.8, 4.8,\n",
       "       4.3, 5.8, 5.7, 5.4, 5.1, 5.7, 5.1, 5.4, 5.1, 4.6, 5.1, 4.8, 5. ,\n",
       "       5. , 5.2, 5.2, 4.7, 4.8, 5.4, 5.2, 5.5, 4.9, 5. , 5.5, 4.9, 4.4,\n",
       "       5.1, 5. , 4.5, 4.4, 5. , 5.1, 4.8, 5.1, 4.6, 5.3, 5. , 7. , 6.4,\n",
       "       6.9, 5.5, 6.5, 5.7, 6.3, 4.9, 6.6, 5.2, 5. , 5.9, 6. , 6.1, 5.6,\n",
       "       6.7, 5.6, 5.8, 6.2, 5.6, 5.9, 6.1, 6.3, 6.1, 6.4, 6.6, 6.8, 6.7,\n",
       "       6. , 5.7, 5.5, 5.5, 5.8, 6. , 5.4, 6. , 6.7, 6.3, 5.6, 5.5, 5.5,\n",
       "       6.1, 5.8, 5. , 5.6, 5.7, 5.7, 6.2, 5.1, 5.7, 6.3, 5.8, 7.1, 6.3,\n",
       "       6.5, 7.6, 4.9, 7.3, 6.7, 7.2, 6.5, 6.4, 6.8, 5.7, 5.8, 6.4, 6.5,\n",
       "       7.7, 7.7, 6. , 6.9, 5.6, 7.7, 6.3, 6.7, 7.2, 6.2, 6.1, 6.4, 7.2,\n",
       "       7.4, 7.9, 6.4, 6.3, 6.1, 7.7, 6.3, 6.4, 6. , 6.9, 6.7, 6.9, 5.8,\n",
       "       6.8, 6.7, 6.7, 6.3, 6.5, 6.2, 5.9])"
      ]
     },
     "execution_count": 10,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris_data.data[:,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 13,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[5.1],\n",
       "       [4.9],\n",
       "       [4.7],\n",
       "       [4.6],\n",
       "       [5. ],\n",
       "       [5.4],\n",
       "       [4.6],\n",
       "       [5. ],\n",
       "       [4.4],\n",
       "       [4.9],\n",
       "       [5.4],\n",
       "       [4.8],\n",
       "       [4.8],\n",
       "       [4.3],\n",
       "       [5.8],\n",
       "       [5.7],\n",
       "       [5.4],\n",
       "       [5.1],\n",
       "       [5.7],\n",
       "       [5.1],\n",
       "       [5.4],\n",
       "       [5.1],\n",
       "       [4.6],\n",
       "       [5.1],\n",
       "       [4.8],\n",
       "       [5. ],\n",
       "       [5. ],\n",
       "       [5.2],\n",
       "       [5.2],\n",
       "       [4.7],\n",
       "       [4.8],\n",
       "       [5.4],\n",
       "       [5.2],\n",
       "       [5.5],\n",
       "       [4.9],\n",
       "       [5. ],\n",
       "       [5.5],\n",
       "       [4.9],\n",
       "       [4.4],\n",
       "       [5.1],\n",
       "       [5. ],\n",
       "       [4.5],\n",
       "       [4.4],\n",
       "       [5. ],\n",
       "       [5.1],\n",
       "       [4.8],\n",
       "       [5.1],\n",
       "       [4.6],\n",
       "       [5.3],\n",
       "       [5. ],\n",
       "       [7. ],\n",
       "       [6.4],\n",
       "       [6.9],\n",
       "       [5.5],\n",
       "       [6.5],\n",
       "       [5.7],\n",
       "       [6.3],\n",
       "       [4.9],\n",
       "       [6.6],\n",
       "       [5.2],\n",
       "       [5. ],\n",
       "       [5.9],\n",
       "       [6. ],\n",
       "       [6.1],\n",
       "       [5.6],\n",
       "       [6.7],\n",
       "       [5.6],\n",
       "       [5.8],\n",
       "       [6.2],\n",
       "       [5.6],\n",
       "       [5.9],\n",
       "       [6.1],\n",
       "       [6.3],\n",
       "       [6.1],\n",
       "       [6.4],\n",
       "       [6.6],\n",
       "       [6.8],\n",
       "       [6.7],\n",
       "       [6. ],\n",
       "       [5.7],\n",
       "       [5.5],\n",
       "       [5.5],\n",
       "       [5.8],\n",
       "       [6. ],\n",
       "       [5.4],\n",
       "       [6. ],\n",
       "       [6.7],\n",
       "       [6.3],\n",
       "       [5.6],\n",
       "       [5.5],\n",
       "       [5.5],\n",
       "       [6.1],\n",
       "       [5.8],\n",
       "       [5. ],\n",
       "       [5.6],\n",
       "       [5.7],\n",
       "       [5.7],\n",
       "       [6.2],\n",
       "       [5.1],\n",
       "       [5.7],\n",
       "       [6.3],\n",
       "       [5.8],\n",
       "       [7.1],\n",
       "       [6.3],\n",
       "       [6.5],\n",
       "       [7.6],\n",
       "       [4.9],\n",
       "       [7.3],\n",
       "       [6.7],\n",
       "       [7.2],\n",
       "       [6.5],\n",
       "       [6.4],\n",
       "       [6.8],\n",
       "       [5.7],\n",
       "       [5.8],\n",
       "       [6.4],\n",
       "       [6.5],\n",
       "       [7.7],\n",
       "       [7.7],\n",
       "       [6. ],\n",
       "       [6.9],\n",
       "       [5.6],\n",
       "       [7.7],\n",
       "       [6.3],\n",
       "       [6.7],\n",
       "       [7.2],\n",
       "       [6.2],\n",
       "       [6.1],\n",
       "       [6.4],\n",
       "       [7.2],\n",
       "       [7.4],\n",
       "       [7.9],\n",
       "       [6.4],\n",
       "       [6.3],\n",
       "       [6.1],\n",
       "       [7.7],\n",
       "       [6.3],\n",
       "       [6.4],\n",
       "       [6. ],\n",
       "       [6.9],\n",
       "       [6.7],\n",
       "       [6.9],\n",
       "       [5.8],\n",
       "       [6.8],\n",
       "       [6.7],\n",
       "       [6.7],\n",
       "       [6.3],\n",
       "       [6.5],\n",
       "       [6.2],\n",
       "       [5.9]])"
      ]
     },
     "execution_count": 13,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris_data.data[:,np.newaxis,0]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 12,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.84333333, 3.05733333, 3.758     , 1.19933333])"
      ]
     },
     "execution_count": 12,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#计算均值：均值结果如下\n",
    "np.mean(iris_data.data, axis=0)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 14,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([5.8 , 3.  , 4.35, 1.3 ])"
      ]
     },
     "execution_count": 14,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#计算中位数：中位数结果如下\n",
    "np.median(iris_data.data, axis=0)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 15,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[1, 2, 3, 2, 4, 3, 3, 2, 4, 3, 3, 2, 3, 3, 3, 1, 1, 2, 4, 4, 1, 1, 3, 2, 1, 2, 3, 3, 2, 4, 3, 1, 1, 4, 4, 3, 3, 2, 1, 1, 1, 3, 3, 2, 2, 1, 1, 1, 4, 2, 2, 1, 1, 4, 3, 1, 4, 2, 3, 3, 4, 3, 4, 4, 4, 4, 2, 3, 3, 2, 1, 1, 1, 4, 3, 3, 4, 1, 2, 4, 1, 3, 1, 2, 1, 3, 1, 2, 2, 1, 4, 1, 1, 1, 2, 4, 3, 3, 2, 3]\n"
     ]
    }
   ],
   "source": [
    "import random\n",
    "data = [random.choice(range(1,5)) for i in range(100)]\n",
    "print(data)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 16,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[ 0 29 22 29 20]\n"
     ]
    },
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 16,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "counts = np.bincount(data)\n",
    "print(counts)\n",
    "np.argmax(counts)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 17,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "1"
      ]
     },
     "execution_count": 17,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "from scipy import stats\n",
    "stats.mode(data)\n",
    "stats.mode(data)[0][0]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 22,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[5.1 4.9 4.7 4.6 5.  5.4 4.6 5.  4.4 4.9 5.4 4.8 4.8 4.3 5.8 5.7 5.4 5.1\n",
      " 5.7 5.1 5.4 5.1 4.6 5.1 4.8 5.  5.  5.2 5.2 4.7 4.8 5.4 5.2 5.5 4.9 5.\n",
      " 5.5 4.9 4.4 5.1 5.  4.5 4.4 5.  5.1 4.8 5.1 4.6 5.3 5.  7.  6.4 6.9 5.5\n",
      " 6.5 5.7 6.3 4.9 6.6 5.2 5.  5.9 6.  6.1 5.6 6.7 5.6 5.8 6.2 5.6 5.9 6.1\n",
      " 6.3 6.1 6.4 6.6 6.8 6.7 6.  5.7 5.5 5.5 5.8 6.  5.4 6.  6.7 6.3 5.6 5.5\n",
      " 5.5 6.1 5.8 5.  5.6 5.7 5.7 6.2 5.1 5.7 6.3 5.8 7.1 6.3 6.5 7.6 4.9 7.3\n",
      " 6.7 7.2 6.5 6.4 6.8 5.7 5.8 6.4 6.5 7.7 7.7 6.  6.9 5.6 7.7 6.3 6.7 7.2\n",
      " 6.2 6.1 6.4 7.2 7.4 7.9 6.4 6.3 6.1 7.7 6.3 6.4 6.  6.9 6.7 6.9 5.8 6.8\n",
      " 6.7 6.7 6.3 6.5 6.2 5.9]\n"
     ]
    }
   ],
   "source": [
    "import numpy as np\n",
    "from sklearn.datasets import load_iris\n",
    "iris_data = load_iris()\n",
    "feature_1 = iris_data.data[:,0]\n",
    "print(feature_1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 19,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.6000000000000005"
      ]
     },
     "execution_count": 19,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "feature_1.max()-feature_1.min()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 20,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "3.6000000000000005"
      ]
     },
     "execution_count": 20,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.max(feature_1)-np.min(feature_1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 23,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "4.4\n",
      "4.33725\n"
     ]
    }
   ],
   "source": [
    "Q3 = np.percentile(feature_1,0.75)\n",
    "print(Q3)\n",
    "Q1 = np.percentile(feature_1,0.25)\n",
    "print(Q1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 24,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "0.0627500000000003\n"
     ]
    }
   ],
   "source": [
    "IQR = Q3 - Q1\n",
    "print(IQR)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 25,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "[4.3, 4.33725, 5.8, 4.4, 7.9]"
      ]
     },
     "execution_count": 25,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "max_value = np.max(feature_1)\n",
    "Q3 = np.percentile(feature_1,0.75)\n",
    "median_value = np.median(feature_1)\n",
    "Q1 = np.percentile(feature_1,0.25)\n",
    "min_value = np.min(feature_1)\n",
    "[min_value, Q1, median_value, Q3, max_value]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 26,
   "metadata": {},
   "outputs": [
    {
     "name": "stderr",
     "output_type": "stream",
     "text": [
      "Matplotlib is building the font cache; this may take a moment.\n"
     ]
    },
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "import matplotlib.pyplot as plt\n",
    "plt.boxplot(x=feature_1)\n",
    "plt.ylabel('values of ' + iris_data.feature_names[0])\n",
    "plt.xlabel(iris_data.feature_names[0])\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 27,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6811222222222223"
      ]
     },
     "execution_count": 27,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# feature_1⽅差结果：\n",
    "var = np.var(feature_1)\n",
    "var"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 28,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.8253012917851409"
      ]
     },
     "execution_count": 28,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# feature_1标准差结果：\n",
    "std = np.std(feature_1)\n",
    "std"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 29,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.68112222, 0.18871289, 3.09550267, 0.57713289])"
      ]
     },
     "execution_count": 29,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# iris_data数据集所有维度⽅差结果：\n",
    "var_all = np.var(iris_data.data, axis=0)\n",
    "var_all\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 30,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([0.82530129, 0.43441097, 1.75940407, 0.75969263])"
      ]
     },
     "execution_count": 30,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# iris_data数据集所有维度标准差结果：\n",
    "std_all = np.std(iris_data.data, axis=0)\n",
    "std_all\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 34,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from sklearn.datasets import load_iris\n",
    "iris_data = load_iris()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 35,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "[5.1 4.9 4.7 4.6 5.  5.4 4.6 5.  4.4 4.9 5.4 4.8 4.8 4.3 5.8 5.7 5.4 5.1\n",
      " 5.7 5.1 5.4 5.1 4.6 5.1 4.8 5.  5.  5.2 5.2 4.7 4.8 5.4 5.2 5.5 4.9 5.\n",
      " 5.5 4.9 4.4 5.1 5.  4.5 4.4 5.  5.1 4.8 5.1 4.6 5.3 5.  7.  6.4 6.9 5.5\n",
      " 6.5 5.7 6.3 4.9 6.6 5.2 5.  5.9 6.  6.1 5.6 6.7 5.6 5.8 6.2 5.6 5.9 6.1\n",
      " 6.3 6.1 6.4 6.6 6.8 6.7 6.  5.7 5.5 5.5 5.8 6.  5.4 6.  6.7 6.3 5.6 5.5\n",
      " 5.5 6.1 5.8 5.  5.6 5.7 5.7 6.2 5.1 5.7 6.3 5.8 7.1 6.3 6.5 7.6 4.9 7.3\n",
      " 6.7 7.2 6.5 6.4 6.8 5.7 5.8 6.4 6.5 7.7 7.7 6.  6.9 5.6 7.7 6.3 6.7 7.2\n",
      " 6.2 6.1 6.4 7.2 7.4 7.9 6.4 6.3 6.1 7.7 6.3 6.4 6.  6.9 6.7 6.9 5.8 6.8\n",
      " 6.7 6.7 6.3 6.5 6.2 5.9]\n"
     ]
    }
   ],
   "source": [
    "feature_1 = iris_data.data[:,0]\n",
    "print(feature_1)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 37,
   "metadata": {},
   "outputs": [],
   "source": [
    "from pandas import DataFrame\n",
    "iris_df = DataFrame(iris_data.data, columns=iris_data.feature_names)"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 47,
   "metadata": {},
   "outputs": [
    {
     "ename": "SyntaxError",
     "evalue": "invalid syntax (<ipython-input-47-875d615305fc>, line 4)",
     "output_type": "error",
     "traceback": [
      "\u001b[1;36m  File \u001b[1;32m\"<ipython-input-47-875d615305fc>\"\u001b[1;36m, line \u001b[1;32m4\u001b[0m\n\u001b[1;33m    axes[0].set_ylabel(iris_df.columns[0])\u001b[0m\n\u001b[1;37m    ^\u001b[0m\n\u001b[1;31mSyntaxError\u001b[0m\u001b[1;31m:\u001b[0m invalid syntax\n"
     ]
    }
   ],
   "source": [
    "%matplotlib inline\n",
    "fig, axes = plt.subplots(1,4)\n",
    "iris_df.plot(kind='box', ax=axes, subplots=True, title='All feature boxplot'\n",
    "axes[0].set_ylabel(iris_df.columns[0])\n",
    "axes[1].set_ylabel(iris_df.columns[1])\n",
    "axes[2].set_ylabel(iris_df.columns[2])\n",
    "axes[3].set_ylabel(iris_df.columns[3])\n",
    "fig.subplots_adjust(wspace=1, hspace=1)\n",
    "fig.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 43,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>sepal length (cm)</th>\n",
       "      <th>sepal width (cm)</th>\n",
       "      <th>petal length (cm)</th>\n",
       "      <th>petal width (cm)</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>count</th>\n",
       "      <td>150.000000</td>\n",
       "      <td>150.000000</td>\n",
       "      <td>150.000000</td>\n",
       "      <td>150.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>mean</th>\n",
       "      <td>5.843333</td>\n",
       "      <td>3.057333</td>\n",
       "      <td>3.758000</td>\n",
       "      <td>1.199333</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>std</th>\n",
       "      <td>0.828066</td>\n",
       "      <td>0.435866</td>\n",
       "      <td>1.765298</td>\n",
       "      <td>0.762238</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>min</th>\n",
       "      <td>4.300000</td>\n",
       "      <td>2.000000</td>\n",
       "      <td>1.000000</td>\n",
       "      <td>0.100000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>25%</th>\n",
       "      <td>5.100000</td>\n",
       "      <td>2.800000</td>\n",
       "      <td>1.600000</td>\n",
       "      <td>0.300000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>50%</th>\n",
       "      <td>5.800000</td>\n",
       "      <td>3.000000</td>\n",
       "      <td>4.350000</td>\n",
       "      <td>1.300000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>75%</th>\n",
       "      <td>6.400000</td>\n",
       "      <td>3.300000</td>\n",
       "      <td>5.100000</td>\n",
       "      <td>1.800000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>max</th>\n",
       "      <td>7.900000</td>\n",
       "      <td>4.400000</td>\n",
       "      <td>6.900000</td>\n",
       "      <td>2.500000</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "       sepal length (cm)  sepal width (cm)  petal length (cm)  \\\n",
       "count         150.000000        150.000000         150.000000   \n",
       "mean            5.843333          3.057333           3.758000   \n",
       "std             0.828066          0.435866           1.765298   \n",
       "min             4.300000          2.000000           1.000000   \n",
       "25%             5.100000          2.800000           1.600000   \n",
       "50%             5.800000          3.000000           4.350000   \n",
       "75%             6.400000          3.300000           5.100000   \n",
       "max             7.900000          4.400000           6.900000   \n",
       "\n",
       "       petal width (cm)  \n",
       "count        150.000000  \n",
       "mean           1.199333  \n",
       "std            0.762238  \n",
       "min            0.100000  \n",
       "25%            0.300000  \n",
       "50%            1.300000  \n",
       "75%            1.800000  \n",
       "max            2.500000  "
      ]
     },
     "execution_count": 43,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "iris_df.describe()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 48,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from sklearn.datasets import load_iris\n",
    "iris_data = load_iris()\n",
    "sample_1 = iris_data.data[0,:]"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 49,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "p1 = plt.bar(range(1, len(sample_1)+1),\n",
    " height = sample_1,\n",
    " tick_label = iris_data.feature_names,\n",
    " width=0.3)\n",
    "plt.ylabel('cm')\n",
    "plt.title('bar of first data')\n",
    "plt.show()\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 51,
   "metadata": {},
   "outputs": [],
   "source": [
    "import numpy as np\n",
    "from sklearn.datasets import load_iris\n",
    "import matplotlib.pyplot as plt\n",
    "iris_data = load_iris()\n",
    "feature_2 = iris_data.data[:,2]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 52,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "plt.hist(feature_2, bins=10)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 54,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {
      "needs_background": "light"
     },
     "output_type": "display_data"
    }
   ],
   "source": [
    "feature_2 = iris_data.data[:,1]\n",
    "feature_4 = iris_data.data[:,3]\n",
    "plt.scatter(feature_2,feature_4)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 55,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 学⽣成绩雷达图\n",
    "import numpy as np\n",
    "import matplotlib.pyplot as plt\n",
    "import matplotlib\n",
    "plt.rcParams['font.sans-serif'] = ['simhei']"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 56,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([88, 92, 95, 90, 85, 88])"
      ]
     },
     "execution_count": 56,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# 准备数据和参数\n",
    "labels=np.array(['语⽂','数学','英语','物理','化学'])\n",
    "n_attr=len(labels)\n",
    "scores = np.array([88,92,95,90,85])\n",
    "angles = np.linspace(0, 2*np.pi, n_attr, endpoint=False)\n",
    "scores = np.concatenate((scores, [scores[0]])) # 闭合\n",
    "angles = np.concatenate((angles, [angles[0]])) # 闭合\n",
    "scores"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 121,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "image/png": "iVBORw0KGgoAAAANSUhEUgAAARcAAAEbCAYAAADwEcCvAAAAOXRFWHRTb2Z0d2FyZQBNYXRwbG90bGliIHZlcnNpb24zLjMuMiwgaHR0cHM6Ly9tYXRwbG90bGliLm9yZy8vihELAAAACXBIWXMAAAsTAAALEwEAmpwYAAB2SElEQVR4nO2dd3xT5f7H39npTncLpeyNopSpLAc4ENzgQFARuHoVEcEFotzruFx/ildFQXFcFRUnFxCQjeAAypKyyi50jyRN0uyc3x+xkUJH2pzTppD369UXtOfkOU/Scz59nu+UCYIgECJEiBAiI2/qCYQIEeLCJCQuIUKEkISQuIQIEUISQuISIkQISQiJS4gQISQhJC4XMAaDAavVitPpbOqpIAgCHo+nqacRohEJicsFzP/93//x2muv8eabb/Loo4/6Hm6Xy8WoUaOwWCxVzh89ejRr1qw5bxy3212rQDmdTtxut+/7xYsX8+WXX1Y5Jy8vj5SUlEDeTohmhrKpJxBCOsLCwpDJZDz55JOMGzeOrVu3MnjwYLZu3YrBYCAiIoIlS5bw0UcfIZPJ+OOPPzh58iRvvPEGbrebDz/8kPT0dH777Tdmz56NWq0G4OjRo6hUKlq3bg2Aw+HgmWeeYfjw4QD07duXIUOG0LlzZ3r16gWAWq0mJiam2nn26tULl8vlG786Tp8+TWFhoZgfTwiJkYWC6C4M1q9fz9SpU9FoNL6fFRUV4Xa7SU1Nxel0YjabOXbsGGPHjmX06NFceeWVyGQyiouL0Wg0PPHEE4wZM4Z+/fphtVrp0KEDBw4c4M0336RNmza+cTdt2oRWq6V///6+n+Xk5DB16lQuvfRSAL755htSU1NRKBQolUqMRiMPP/wwX375JYIg4HQ6ueKKKwDo168fS5YsoU2bNvz666/885//ZOXKlchkMsC70mrTpg1nzpxphE8yhFiEVi4XCBaLhYyMDD755BPfz5YtW8batWt5++23cbvdKBQKfvvtN3bs2MHcuXO55ZZbmDNnDgsXLsRoNPLHH3+Qm5tLbGwsd999N926daOkpIQzZ87Qu3dvvv32W/r27cvQoUPR6XRkZ2dz4MAB7rvvPvbs2UNpaanv2nfeeScAY8aMQaFQoNfrMZvNzJs37zxxUalUABiNRiZOnEhYWBh9+vTh0KFDzJ07l8mTJ6NUhm7V5kboN3aBUPlX/mxatGhBUVERAA888AB33nkn3bt3Z8yYMdx///1ceuml5Ofn06tXLxQKBampqbRo0YLY2FiKiopYs2YN/fv3Z+HChbhcLnr06EFcXBzff/89Ho+HyZMno9frSUtL4+qrryYhIYE1a9bw+OOPI5PJ+PHHH1myZAngtcOkpaXxwQcfVDt/t9vNyJEjiYuLY9CgQfTv359Fixbx8MMPhwzBzZSQQfcCQRAEli5dSpcuXWjVqhVjxoyhZcuWHD16FJPJxLJly+jWrRvt2rXjqquuQq1WM3PmTG655RZ27drF0qVLOXLkCJs3b2bp0qWkp6czfPhwoqOjad++PQUFBRw6dIgzZ86QlpZGQkICp0+f5tChQxQVFdG2bVuioqIYPnw4Bw8eRK1WVxG8ZcuW0blzZ6ZOnVqtWCgUCt5++22++uorvvzyS+666y6eeOIJ5PLQLdpcCa1cLhAqKiq46667WLBgAT/88APr168nNTWVgoICXn/9de6++27at29PSUkJw4cPp2PHjtx33328++677Nu3j19//ZW9e/fSpk0bPv74Y8rLy31j5+bmct1119GjRw/A6/lRKpUkJSUBsHfvXoxGI+Hh4dXObdeuXWzdupVFixYxcuRIZsyYweuvv17lnNOnT/Piiy8CcM8993DllVeycOFCJk2axDvvvCPBJxZCakLicoGQn59PdHQ0ACaTiYSEBMDruXnvvff4448/AEhISPB5ijweDw6Hw7eSmD17NgsWLACo4lpWq9WkpaWRmZkJwIsvvohOp2Pq1KmAd/tVk7Dk5ORwxx138O677xIVFcU333xDr1696NatGxMmTPCd16pVKz799FNatGjBZ599xnPPPcekSZNYuHAhWq1WxE8qRGMREpcLhMzMTAYPHozRaGTPnj20b9+e8vJyTpw4Qbdu3UhOTmbjxo2o1Wpee+01cnNzsVqtvPPOO/zjH/+gsLCQvLw8cnNz6dGjBz179vSNLZPJyM3NZeDAgYBXMJRKJd9++y3gDdY7G7vdjtFo5MCBA7z22mtMmTKFm2++GYDExES+/PJLpk2bxgMPPIBcLqfSYdmyZUvmzp3Ld999x+23386QIUOIiYnB5XIRcmo2P0Ib2gsAq9XK2rVrufbaa7nrrrvYunUrnTp14qqrrmLy5Mmo1WreeOMNFixYwLp163jggQf46aef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\n",
      "text/plain": [
       "<Figure size 432x288 with 1 Axes>"
      ]
     },
     "metadata": {},
     "output_type": "display_data"
    }
   ],
   "source": [
    "# 绘图\n",
    "fig = plt.figure(facecolor=\"white\")\n",
    "plt.subplot(111,polar=True)\n",
    "plt.plot(angles, scores, 'bo-', color = 'g',linewidth = 2)\n",
    "plt.fill(angles, scores, facecolor = 'g',alpha = 0.2)\n",
    "# t.thetagrids(angles*180/np.pi,labels)\n",
    "plt.title('成绩雷达图', ha='center')\n",
    "plt.grid(True)\n",
    "plt.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 62,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Collecting wordcloudNote: you may need to restart the kernel to use updated packages.\n",
      "\n",
      "  Downloading wordcloud-1.8.1-cp38-cp38-win_amd64.whl (155 kB)\n",
      "Requirement already satisfied: pillow in d:\\users\\gyu\\anaconda3\\lib\\site-packages (from wordcloud) (8.0.1)\n",
      "Requirement already satisfied: numpy>=1.6.1 in d:\\users\\gyu\\anaconda3\\lib\\site-packages (from wordcloud) (1.19.2)\n",
      "Requirement already satisfied: matplotlib in d:\\users\\gyu\\anaconda3\\lib\\site-packages (from wordcloud) (3.3.2)\n",
      "Requirement already satisfied: pyparsing!=2.0.4,!=2.1.2,!=2.1.6,>=2.0.3 in d:\\users\\gyu\\anaconda3\\lib\\site-packages (from matplotlib->wordcloud) (2.4.7)\n",
      "Requirement already satisfied: certifi>=2020.06.20 in d:\\users\\gyu\\anaconda3\\lib\\site-packages (from matplotlib->wordcloud) (2020.6.20)\n",
      "Requirement already satisfied: python-dateutil>=2.1 in d:\\users\\gyu\\anaconda3\\lib\\site-packages (from matplotlib->wordcloud) (2.8.1)\n",
      "Requirement already satisfied: kiwisolver>=1.0.1 in d:\\users\\gyu\\anaconda3\\lib\\site-packages (from matplotlib->wordcloud) (1.3.0)\n",
      "Requirement already satisfied: cycler>=0.10 in d:\\users\\gyu\\anaconda3\\lib\\site-packages (from matplotlib->wordcloud) (0.10.0)\n",
      "Requirement already satisfied: six>=1.5 in d:\\users\\gyu\\anaconda3\\lib\\site-packages (from python-dateutil>=2.1->matplotlib->wordcloud) (1.15.0)\n",
      "Installing collected packages: wordcloud\n",
      "Successfully installed wordcloud-1.8.1\n"
     ]
    }
   ],
   "source": [
    "pip install wordcloud"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 63,
   "metadata": {},
   "outputs": [
    {
     "name": "stdout",
     "output_type": "stream",
     "text": [
      "Collecting jieba\n",
      "  Downloading jieba-0.42.1.tar.gz (19.2 MB)\n",
      "Building wheels for collected packages: jieba\n",
      "Note: you may need to restart the kernel to use updated packages.  Building wheel for jieba (setup.py): started\n",
      "  Building wheel for jieba (setup.py): finished with status 'done'\n",
      "  Created wheel for jieba: filename=jieba-0.42.1-py3-none-any.whl size=19314482 sha256=ce017e146aceccad6f93d37135f1ddf58603d068365bb284a0783a515f15045b\n",
      "  Stored in directory: c:\\users\\gyu\\appdata\\local\\pip\\cache\\wheels\\ca\\38\\d8\\dfdfe73bec1d12026b30cb7ce8da650f3f0ea2cf155ea018ae\n",
      "Successfully built jieba\n",
      "Installing collected packages: jieba\n",
      "Successfully installed jieba-0.42.1\n",
      "\n"
     ]
    }
   ],
   "source": [
    "pip install jieba\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 77,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 《政府⼯作报告2019》\n",
    "import jieba\n",
    "from wordcloud import WordCloud\n",
    "import PIL\n",
    "import os\n",
    "def chinese_jieba(txt):\n",
    "     wordlist_jieba = jieba.cut(txt) # 将⽂本分割，返回列表\n",
    "     txt_jieba = \" \".join(wordlist_jieba) # 将列表拼接为以空格为间断的字符串\n",
    "     return txt_jieba\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 84,
   "metadata": {},
   "outputs": [],
   "source": [
    "stopwords = {'这些':0, '那些':0, '因为':0, '所以':0}\n",
    "with open('2019年政府工作报告.txt', encoding='utf8') as fp:\n",
    " txt = fp.read()\n",
    " cutted_text = chinese_jieba(txt)\n",
    "\n",
    " # print(txt)\n",
    " wordcloud = WordCloud(font_path = r'C:\\Windows\\Fonts\\STKAITI.TTF', # 字\n",
    " background_color = 'white', # 背景⾊\n",
    " max_words = 80, # 最⼤显示单词数\n",
    " max_font_size = 80, \n",
    " stopwords = stopwords # 过滤停⽤词\n",
    " ).generate(cutted_text)\n",
    " image = wordcloud.to_image()\n",
    " image.show()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 85,
   "metadata": {},
   "outputs": [],
   "source": [
    "# 利⽤np.linalg.norm函数\n",
    "# numpy.linalg.norm(x, ord=None, axis=None, keepdims=False)\n",
    "import numpy as np\n",
    "from sklearn.datasets import load_iris\n",
    "import matplotlib.pyplot as plt\n",
    "iris_data = load_iris()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 86,
   "metadata": {},
   "outputs": [],
   "source": [
    "sample_1 = iris_data.data[0,:]\n",
    "sample_2 = iris_data.data[1,:]\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 87,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.5385164807134502"
      ]
     },
     "execution_count": 87,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def euclidean_distance(vec_1, vec_2):\n",
    " return np.linalg.norm(vec_1 - vec_2, ord=2)\n",
    "euclidean_dist = euclidean_distance(sample_1, sample_2)\n",
    "euclidean_dist\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 88,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.6999999999999993"
      ]
     },
     "execution_count": 88,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "def manhattan_distance(vec_1, vec_2):\n",
    " return np.linalg.norm(vec_1 - vec_2, ord=1)\n",
    "manhattan_dist = manhattan_distance(sample_1, sample_2)\n",
    "manhattan_dist"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 120,
   "metadata": {
    "scrolled": true
   },
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>姓名</th>\n",
       "      <th>语文</th>\n",
       "      <th>数学</th>\n",
       "      <th>英语</th>\n",
       "      <th>物理</th>\n",
       "      <th>化学</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>张三</td>\n",
       "      <td>85</td>\n",
       "      <td>80.0</td>\n",
       "      <td>95.0</td>\n",
       "      <td>83.0</td>\n",
       "      <td>95.0</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   姓名  语文    数学    英语    物理    化学\n",
       "0  张三  85  80.0  95.0  83.0  95.0"
      ]
     },
     "execution_count": 120,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "import numpy as np\n",
    "import pandas as pd\n",
    "raw_data = {'姓名': ['张三', '李四', '王五', '赵六', '钱八'], \n",
    " '语文': [85, 76, '90', '65', np.nan], \n",
    " '数学': [80, 72, np.nan, 90, 86], \n",
    " '英语': [95, np.nan, 76,np.nan, np.nan], \n",
    " '物理': [83, 84, 92, 66, np.nan],\n",
    " '化学': [95, 88, np.nan, 74, np.nan]}\n",
    "df = pd.DataFrame(raw_data)\n",
    "df\n",
    "df.dropna(axis=0)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 96,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>姓名</th>\n",
       "      <th>语文</th>\n",
       "      <th>数学</th>\n",
       "      <th>英语</th>\n",
       "      <th>物理</th>\n",
       "      <th>化学</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>张三</td>\n",
       "      <td>85</td>\n",
       "      <td>80.0</td>\n",
       "      <td>95.0</td>\n",
       "      <td>83.0</td>\n",
       "      <td>95.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>李四</td>\n",
       "      <td>76</td>\n",
       "      <td>72.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>84.0</td>\n",
       "      <td>88.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>王五</td>\n",
       "      <td>90</td>\n",
       "      <td>60.0</td>\n",
       "      <td>76.0</td>\n",
       "      <td>92.0</td>\n",
       "      <td>60.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>赵六</td>\n",
       "      <td>65</td>\n",
       "      <td>90.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>66.0</td>\n",
       "      <td>74.0</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>钱八</td>\n",
       "      <td>NaN</td>\n",
       "      <td>86.0</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "      <td>NaN</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   姓名   语文    数学    英语    物理    化学\n",
       "0  张三   85  80.0  95.0  83.0  95.0\n",
       "1  李四   76  72.0   NaN  84.0  88.0\n",
       "2  王五   90  60.0  76.0  92.0  60.0\n",
       "3  赵六   65  90.0   NaN  66.0  74.0\n",
       "4  钱八  NaN  86.0   NaN   NaN   NaN"
      ]
     },
     "execution_count": 96,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df_manual = df.copy()\n",
    "df_manual.loc[2,'数学'] = 60\n",
    "df_manual.loc[2,'化学'] = 60\n",
    "df_manual"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 97,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/html": [
       "<div>\n",
       "<style scoped>\n",
       "    .dataframe tbody tr th:only-of-type {\n",
       "        vertical-align: middle;\n",
       "    }\n",
       "\n",
       "    .dataframe tbody tr th {\n",
       "        vertical-align: top;\n",
       "    }\n",
       "\n",
       "    .dataframe thead th {\n",
       "        text-align: right;\n",
       "    }\n",
       "</style>\n",
       "<table border=\"1\" class=\"dataframe\">\n",
       "  <thead>\n",
       "    <tr style=\"text-align: right;\">\n",
       "      <th></th>\n",
       "      <th>姓名</th>\n",
       "      <th>语文</th>\n",
       "      <th>数学</th>\n",
       "      <th>英语</th>\n",
       "      <th>物理</th>\n",
       "      <th>化学</th>\n",
       "    </tr>\n",
       "  </thead>\n",
       "  <tbody>\n",
       "    <tr>\n",
       "      <th>0</th>\n",
       "      <td>张三</td>\n",
       "      <td>85</td>\n",
       "      <td>80.0</td>\n",
       "      <td>95.0</td>\n",
       "      <td>83.00</td>\n",
       "      <td>95.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>1</th>\n",
       "      <td>李四</td>\n",
       "      <td>76</td>\n",
       "      <td>72.0</td>\n",
       "      <td>85.5</td>\n",
       "      <td>84.00</td>\n",
       "      <td>88.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>2</th>\n",
       "      <td>王五</td>\n",
       "      <td>90</td>\n",
       "      <td>82.0</td>\n",
       "      <td>76.0</td>\n",
       "      <td>92.00</td>\n",
       "      <td>85.666667</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>3</th>\n",
       "      <td>赵六</td>\n",
       "      <td>65</td>\n",
       "      <td>90.0</td>\n",
       "      <td>85.5</td>\n",
       "      <td>66.00</td>\n",
       "      <td>74.000000</td>\n",
       "    </tr>\n",
       "    <tr>\n",
       "      <th>4</th>\n",
       "      <td>钱八</td>\n",
       "      <td>NaN</td>\n",
       "      <td>86.0</td>\n",
       "      <td>85.5</td>\n",
       "      <td>81.25</td>\n",
       "      <td>85.666667</td>\n",
       "    </tr>\n",
       "  </tbody>\n",
       "</table>\n",
       "</div>"
      ],
      "text/plain": [
       "   姓名   语文    数学    英语     物理         化学\n",
       "0  张三   85  80.0  95.0  83.00  95.000000\n",
       "1  李四   76  72.0  85.5  84.00  88.000000\n",
       "2  王五   90  82.0  76.0  92.00  85.666667\n",
       "3  赵六   65  90.0  85.5  66.00  74.000000\n",
       "4  钱八  NaN  86.0  85.5  81.25  85.666667"
      ]
     },
     "execution_count": 97,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "df.fillna(value=df.mean())\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 99,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([12, 14,  8, 23, 10,  5, 33, 11, 20, 18, 46, 25])"
      ]
     },
     "execution_count": 99,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_price = np.array([12, 14, 8, 23, 10, 5, 33, 11, 20, 18, 46, 25])\n",
    "data_price"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 100,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 5,  8, 10, 11, 12, 14, 18, 20, 23, 25, 33, 46])"
      ]
     },
     "execution_count": 100,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_price.sort()\n",
    "data_price"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 101,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[ 5,  8, 10, 11],\n",
       "       [12, 14, 18, 20],\n",
       "       [23, 25, 33, 46]])"
      ]
     },
     "execution_count": 101,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_box = data_price.reshape([3,-1])\n",
    "data_box\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 102,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 9.,  9.,  9., 16., 16., 16., 29., 29., 29.])"
      ]
     },
     "execution_count": 102,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "np.repeat(np.median(data_box, axis=1), 3)\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 103,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.2       , 0.69230769, 0.        , 0.85714286],\n",
       "       [0.        , 0.        , 0.65789474, 0.        ],\n",
       "       [1.        , 1.        , 1.        , 1.        ]])"
      ]
     },
     "execution_count": 103,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_price = np.array([12, 14, 8, 23, 10, 5, 33, 11, 20, 18, 46, 25])\n",
    "data_price\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 107,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([ 5,  8, 10, 11, 12, 14, 18, 20, 23, 25, 33, 46])"
      ]
     },
     "execution_count": 107,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "data_price.sort()\n",
    "data_price"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 109,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.        , 0.        , 0.        , 0.        ],\n",
       "       [0.38888889, 0.35294118, 0.34782609, 0.25714286],\n",
       "       [1.        , 1.        , 1.        , 1.        ]])"
      ]
     },
     "execution_count": 109,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "# min-max scale\n",
    "from sklearn import preprocessing\n",
    "X_train = np.array(data_box)\n",
    "min_max_scaler = preprocessing.MinMaxScaler()\n",
    "X_train_minmax = min_max_scaler.fit_transform(X_train)\n",
    "X_train_minmax"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 112,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[-1.12480318, -1.08908156, -1.08388958, -0.98832744],\n",
       "       [-0.17996851, -0.23675686, -0.24474926, -0.38185378],\n",
       "       [ 1.30477168,  1.32583843,  1.32863884,  1.37018122]])"
      ]
     },
     "execution_count": 112,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_scaled = preprocessing.scale(X_train)\n",
    "X_scaled"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 115,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "-7.401486830834377e-17"
      ]
     },
     "execution_count": 115,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_scaled.mean()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 116,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "0.9999999999999999"
      ]
     },
     "execution_count": 116,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "X_scaled.var()"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": 117,
   "metadata": {},
   "outputs": [
    {
     "data": {
      "text/plain": [
       "array([[0.5, 0.8, 1. , 1.1],\n",
       "       [1.2, 1.4, 1.8, 2. ],\n",
       "       [2.3, 2.5, 3.3, 4.6]])"
      ]
     },
     "execution_count": 117,
     "metadata": {},
     "output_type": "execute_result"
    }
   ],
   "source": [
    "#小数定标规范化\n",
    "X_train / 10\n"
   ]
  },
  {
   "cell_type": "code",
   "execution_count": null,
   "metadata": {},
   "outputs": [],
   "source": []
  }
 ],
 "metadata": {
  "kernelspec": {
   "display_name": "Python 3",
   "language": "python",
   "name": "python3"
  },
  "language_info": {
   "codemirror_mode": {
    "name": "ipython",
    "version": 3
   },
   "file_extension": ".py",
   "mimetype": "text/x-python",
   "name": "python",
   "nbconvert_exporter": "python",
   "pygments_lexer": "ipython3",
   "version": "3.8.5"
  }
 },
 "nbformat": 4,
 "nbformat_minor": 4
}
